package mn.idax.exchange.otc.util;

import com.google.common.collect.Lists;
import mn.idax.exchange.common.SpringUtils;
import mn.idax.exchange.otc.enums.OTCBeneficiarysEnum;
import mn.idax.exchange.otc.service.impl.MemoryService;
import org.junit.Test;

import java.util.List;

/**
 * Create by jack_huang on 2018/12/17
 */
public class OTCPayTypeNationUtils {

    /**
     * 获取支付方式国际化    List<Integer>
     *
     * @param payType
     * @return
     */
    public static List<String> getPayType(List<Integer> payType) {

        return memoryPayType(payType);
    }


    /**
     * 获取支付方式国际化    String
     *
     * @param payType
     * @return
     */
    public static List<String> getPayType(String payType) {
        List<Integer> splitPayType = splitPayType(payType);
        return memoryPayType(splitPayType);
    }

    /**
     * 获取支付方式国际化    Integer
     *
     * @param payType
     * @return
     */
    public static String getPayType(Integer payType) {

        if (payType.equals(1)) {
            return SpringUtils.getMessage("message." + OTCBeneficiarysEnum.PayMethodEnum.TYPE_ALIPAY.getType());
        } else if (payType.equals(2)) {
            return SpringUtils.getMessage("message." + OTCBeneficiarysEnum.PayMethodEnum.TYPE_WEIXIN.getType());
        } else if (payType.equals(3)) {
            return SpringUtils.getMessage("message." + OTCBeneficiarysEnum.PayMethodEnum.TYPE_BANK.getType());
        } else {
            return (String) MemoryService.PAYTYPEMAP.get(payType);
        }

    }

    /**
     *获取支付方式的图标 List<Integer>
     * @param payType
     * @return
     */
    public static List<String> getPayTypeIcon(List<Integer> payType) {

        return memoryPayTypeIcon(payType);
    }

    /**
     * 获取支付方式的图标    String
     * @param payType
     * @return
     */
    public static List<String> getPayTypeIcon(String payType) {
        List<Integer> splitPayType = splitPayType(payType);
        return memoryPayTypeIcon(splitPayType);
    }

    /**
     * 获取支付方式的图标    String
     * @param payType
     * @return
     */
    public static String getPayTypeIcon(Integer payType) {
        return (String) MemoryService.PAYTYPEICONMAP.get(payType);
    }

    /**
     * @param payType
     * @return
     */
    private static List<Integer> splitPayType(String payType) {
        String[] split = payType.split(",");
        List<Integer> payTypes = Lists.newArrayList();
        for (String s : split) {
            payTypes.add(Integer.valueOf(s));
        }
        return payTypes;
    }

    /**
     * 获取内存中的数据
     *
     * @param payType
     * @return
     */
    private static List<String> memoryPayType(List<Integer> payType) {
        List<String> payTypes = Lists.newLinkedList();
        for (Integer userPayType : payType) {

            if (userPayType.equals(1)) {
                payTypes.add(SpringUtils.getMessage("message." + OTCBeneficiarysEnum.PayMethodEnum.TYPE_ALIPAY.getType()));
            } else if (userPayType.equals(2)) {
                payTypes.add(SpringUtils.getMessage("message." + OTCBeneficiarysEnum.PayMethodEnum.TYPE_WEIXIN.getType()));
            } else if (userPayType.equals(3)) {
                payTypes.add(SpringUtils.getMessage("message." + OTCBeneficiarysEnum.PayMethodEnum.TYPE_BANK.getType()));
            } else {
                payTypes.add((String) MemoryService.PAYTYPEMAP.get(userPayType));
            }

        }
        return payTypes;
    }

    /**
     * 获取内存中的数据
     *
     * @param payType
     * @return
     */
    private static List<String> memoryPayTypeIcon(List<Integer> payType) {
        List<String> payTypes = Lists.newLinkedList();
        for (Integer userPayType : payType) {
            payTypes.add((String) MemoryService.PAYTYPEICONMAP.get(userPayType));
        }
        return payTypes;
    }


    @Test
    public void test1() {
        List<Integer> payTypes = Lists.newArrayList();
        payTypes.add(1);
        payTypes.add(2);
        payTypes.add(3);
        payTypes.add(4);
        List<String> sout = getPayType(payTypes);
        System.out.println(sout);
//        List<Integer> integers = splitPayType("1,2");
//        System.out.println(integers);
    }


}
